package org.posupe.cursos;

import java.util.Date;

import org.posupe.instituicoesEnsino.InstituicaoEnsino;

public class Curso {
	private String codigo;
	private String nome;
	private String descricao;
	
	private String nivel;
	private InstituicaoEnsino instituicaoEnsino;
	private Date inicio;
	private Date conclusao;
	private int cargaHoraria;
	
	
	public Curso(String codigo, String nome, String descricao,
			String nivel, InstituicaoEnsino instituicaoEnsino, Date inicio, Date conclusao, int cargaHoraria){
		this.codigo = codigo;
		this.nome = nome;
		this.descricao = descricao;
		this.nivel = nivel;
		this.instituicaoEnsino = instituicaoEnsino;
		this.inicio = inicio;
		this.conclusao = conclusao;
		this.cargaHoraria = cargaHoraria;
	}
	public Curso(String codigo, String nome, String descricao){
		this.codigo = codigo;
		this.nome = nome;
		this.descricao = descricao;
	}
	public int getCargaHoraria() {
		return cargaHoraria;
	}
	
	public void setCargaHoraria(int cargaHoraria) {
		this.cargaHoraria = cargaHoraria;
	}
	
	public String getCodigo() {
		return codigo;
	}
	
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
		
	public Date getConclusao() {
		return conclusao;
	}
	
	public void setConclusao(Date conclusao) {
		this.conclusao = conclusao;
	}
	
	public String getDescricao() {
		return descricao;
	}
	
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	
	public Date getInicio() {
		return inicio;
	}
	
	public void setInicio(Date inicio) {
		this.inicio = inicio;
	}
	
	public InstituicaoEnsino getInstituicaoEnsino() {
		return instituicaoEnsino;
	}
	
	public void setInstituicaoEnsino(InstituicaoEnsino instituicaoEnsino) {
		this.instituicaoEnsino = instituicaoEnsino;
	}
	
	public String getNivel() {
		return nivel;
	}
	
	public void setNivel(String nivel) {
		this.nivel = nivel;
	}
	
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public boolean equals(Curso curso){
		return (curso instanceof Curso )&&(this.getCodigo() == curso.getCodigo());
	}
	
	public boolean match(Curso curso){
		boolean retorno = true;
		
		if(retorno && (curso.nome == null) 
			&& (curso.nome == null)
			&& (curso.descricao== null)
			&& (curso.nivel == null)
			&& (curso.inicio == null )
			&& (curso.conclusao == null)
			&& (curso.instituicaoEnsino== null)
			){
				retorno = false;
			
		}
		if((retorno &&
				this.nome == null) 
				&& (this.nome == null)
				&& (this.descricao== null)
				&& (this.nivel == null)
				&& (this.inicio == null )
				&& (this.conclusao == null)
				&& (this.instituicaoEnsino== null)
				){
					retorno = false;
				
			}
		if( retorno &&(curso.nome != null && this.nome!=null) ){
			if(!this.nome.contains(curso.nome)){
				retorno = false;
			}
		}
		
		if( retorno &&(curso.descricao != null && this.descricao!=null)){
			if(!this.descricao.contains(curso.descricao)){
				retorno = false;
			}
		}
		
		if( retorno &&(curso.nivel != null && this.nivel!=null)){
			if(!this.nivel.contains(curso.nivel)){
				retorno = false;
			}
		}
		if( retorno && (curso.inicio != null && this.inicio!=null) ){
			if(!this.inicio.equals(curso.inicio)){
				retorno = false;
			}
		}
		if( retorno && (curso.conclusao != null && this.conclusao!=null) ){
			if(!this.conclusao.equals(curso.conclusao)){
				retorno = false;
			}
		}
			
		if( retorno &&(curso.instituicaoEnsino!= null && this.instituicaoEnsino!=null) ){
			if(!this.instituicaoEnsino.match(curso.instituicaoEnsino)){
				retorno = false;
			}
		}
		
		return retorno;
	}
	public String toString(){
		return this.codigo + " : " + this.nome + " - " + this.descricao;
	}
}